// token操作的模块
const jwt = require('jsonwebtoken')
// 密钥，用于解密
const tokenSecret = 'hailubeike@web.com'
// 定义的中间件函数，用于验证token
function verify(req,res,next) {
	// 从请求头部获取token
	console.log(req.headers)
	const token = req.headers.authorization || req.headers.Authorization
	// 验证token是否存在
	if(!token) {
		return res.send({code:410, msg:'token required'})
	}
	try {
		// 将token解密(反序列化)
		const payload = jwt.verify(token,tokenSecret)
		console.log(payload)
		// 判断是否在有效期（如果当前时间超过了有效期说明过期）
		if(Date.now() > payload.expires) {
			return res.send({code: 412, msg: 'token expires'})
		}else{
			// 顺带把用户信息传递过期
			req.token = payload
			// 否则说明是有效的
			next()
		}
	} catch(err) {
		// 在token反序列化的过程中出现错误，说明token是无效的
		return res.send({code: 411, msg: 'token invalid'})
	}
}
// 最后还需要暴露出去
module.exports = {
	verify,
	tokenSecret
}


